import { Sun } from "../seed/Sun.js";  // 假设您有一个 Sun 类来表示阳光
import { ANIMS_PATH } from "../../common/path.js";
import PlantAbstract from "../abstract/PlantAbstract.js";

export default class SunFlower extends PlantAbstract {
    constructor(scene, x, y,direction,plantValue) {
        super(scene, x, y, "sunflower", 20,plantValue); // 使用向日葵的纹理
        const { Body, Bodies } = Phaser.Physics.Matter.Matter; // 访问原生的 Matter 模块
        this.label = "sunflower"; // 设置标签
        this.scene = scene; // 保存场景引用
        scene.add.existing(this); // 将向日葵添加到场景中
        const options = {
            label: this.label,
            isSensor: false,
        };


        const zombieBody = Bodies.rectangle(x , y, this.width/4, this.height, options);
        this.setExistingBody(zombieBody); // 将物理体应用到当前的 Sprite
        this.setIgnoreGravity(true); // 设置忽略重力
        this.setDepth(1); // 设置深度，以便在其他对象之上绘制

        this.init(); // 初始化向日葵
    }

    init() {
        const anims = ANIMS_PATH.Plants.SunFlower; // 动画路径
        const frames = Array.from({ length: anims.count }, (_, i) => ({ key: `${anims.name}${i}` }));
        // 创建动画
        this.anims.create({
            key: anims.name,
            frames: frames,
            frameRate: 10,
            repeat: -1
        });

        // 播放动画
        this.anims.play(anims.name);

        // 定时生成阳光
        this.event=this.scene.time.addEvent({
            delay: 3000,               // 每2秒生成一次
            callback: this.createSun,  // 回调函数
            callbackScope: this,       // 设置函数的作用域
            loop: true                 // 设置为循环
        });
    }
    createSun() {
        // 创建阳光实例并设置位置
        new Sun(this.scene, this.x, this.y - 20,1); // 假设阳光从向日葵的上方生成
    }
    destroy() {

        // 停止阳光生成定时器
        this.event.remove();

        // 销毁当前的 Sprite
        super.destroy(); // 调用父类的 destroy 方法，确保资源被释放

        // 如果有其他需要清理的资源，可以在这里处理
    }
    update(time){

    }
}